<?php

namespace App\Http\Controllers;

use App\Product;
use App\Repositories\ProductRepository;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;

class ProductController extends Controller
{
    //声明一个产品仓库类对象
    protected $chanpinchangclass;

    /**
     * 在构造方法注入相应仓库类
     * ProductController constructor.
     * @param ProductRepository $pangzhipeng
     */
    public function __construct(ProductRepository $prama)
    {
        //注入实例化这个对象
        $this->chanpinchangclass=$prama;
    }

    /**
     * 产品列表
     */
    public function listProduct(Request $request)
    {
        $keyword=$request->get('keyword');
        $data =$this->chanpinchangclass->listProduct($keyword);
        //$list=Product::get();
        //dd($list);
        //return $data;
        return view('product.index',compact('data'));
    }

    /**
     * 添加商品
     * @param Request $request
     */
    public function addProduct(Request $request)
    {
        $img = $request->file('img');
        //检查文件是否上传（有效）
        if($img->isValid()){
            //文件名
            $newName=date('YmdHis');
            //扩展名
            $ext=$img->getClientOriginalExtension();
            $newFileName=$newName.'.'.$ext;
            //文件数据
            $fileData=file_get_contents($img->getRealPath());

            $result=Storage::disk('productImg')->put($newFileName,$fileData);
            //保存图片成功
            if($result){
                $productData['title']=$request->get('title');
                $productData['img']=$newFileName;
                $productData['catagory_id']=$request->get('catagory_id');
                $productData['price']=$request->get('price');
                $productData['inventory']=$request->get('inventory');
                $saveResult=$this->chanpinchangclass->addProduct($productData);
                //产品保存成功
                if($saveResult){
                    //echo $saveResult->id.'-'.$saveResult->title;
                    $detailsFiles=$request->file('detailImg');

                    //产品详细图片
                    $productImgsData=[];
                    foreach ($detailsFiles as $k=>$f){
                        //文件名
                        $newName1=date('YmdHis');
                        //扩展名
                        $ext1=$f->getClientOriginalExtension();
                        $newFileName1=$newName1.'.'.$ext1;
                        $fileData1=file_get_contents($f->getRealPath());
                        $result=Storage::disk('productImg')->put($newFileName1,$fileData1);

                        //产品id
                        $tmp['product_id']=$saveResult->id;
                        $tmp['img']=$newFileName1;
                        array_push($productImgsData,$tmp);
                    }
                    $resultDetails=$this->chanpinchangclass->saveProductImgs($productImgsData);
                    var_dump($detailsFiles);
                    var_dump($resultDetails);
                }
            }else{
                echo '处理失败';
            }
        }else{
            echo '请上传图片';
        }
    }

    /**
     * 上传文件测试
     */
    public function uploadImgTest(Request $request)
    {
        $img = $request->file('img');

        //检查文件是否上传（有效）
        if($img->isValid()){
            //文件名
            $newName=date('YmdHis');
            //扩展名
            $ext=$img->getClientOriginalExtension();
            $newFileName=$newName.'.'.$ext;
            //文件数据
            $fileData=file_get_contents($img->getRealPath());

            $result=Storage::disk('productImg')->put($newFileName,$fileData);
            echo $result;
        }else{
            echo '请上传图片';
        }
    }
}
